/*****************************************************************************
 * Module    : Config
 * File      : config.h
 * Function  : SDK配置文件
 *****************************************************************************/

#ifndef USER_CONFIG_H
#define USER_CONFIG_H
#include "config_define.h"

/*****************************************************************************
 * Module    : Function选择相关配置
 *****************************************************************************/
#define FUNC_BT_EN                      1                       //是否打开蓝牙功能

/*****************************************************************************
 * Module    : 系统功能选择配置
 *****************************************************************************/
#define SYS_CLK_SEL                     SYS_48M                 //选择系统时钟
#define ALG_SYS_CLK_SEL                 SYS_160M                //跑算法需要抬高的系统主频
#define BUCK_MODE_EN                    xcfg_cb.buck_mode_en    //是否BUCK MODE
#define POWKEY_10S_RESET                xcfg_cb.powkey_10s_reset
#define SOFT_POWER_ON_OFF               1                       //是否使用软开关机功能
#define PWRKEY_2_HW_PWRON               0                       //用PWRKEY模拟硬开关
#define SYS_ADJ_DIGVOL_EN               0                       //系统是否调数字音量
#define UART0_PRINTF_SEL                PRINTF_PB3              //选择UART打印信息输出IO，或关闭打印信息输出

/*****************************************************************************
 * Module    : FLASH配置
 *****************************************************************************/
#define FLASH_SIZE                      FSIZE_512K //LQFP48芯片内置1MB，其它封装芯片内置512KB(实际导出prd文件要小于492K)
#define FLASH_CODE_SIZE                 768K                    //程序使用空间大小
#define FLASH_RESERVE_SIZE              0x5000                  //程序保留区空间大小，打开EQ_TBL_RES2_EN需要保留24K
#define FLASH_ERASE_4K                  1                       //是否支持4K擦除
#define FLASH_DUAL_READ                 1                       //是否支持2线模式
#define FLASH_QUAD_READ                 0                       //是否支持4线模式
#define SPIFLASH_SPEED_UP_EN            1                       //SPI FLASH提速。


/*****************************************************************************
 * Module    : 无线功能选择配置
 *****************************************************************************/
//公共配置
#define WIRELESS_CON_CODEC_SEL                  CODEC_LC3S      //编解码选择
#define WIRELESS_CON_FREQ_BAND                  2               //无线mic工作频段 0:2.4G  1:2.2G  2:2.3G  3:2.5G
#define WIRELESS_CON_LINK_NB                    2               //支持连几路无线麦（目前只支持1/2路）
#define WIRELESS_CON_CRC_EN                     1               //链路是否支持CRC校验
#define WIRELESS_CON_VERS                       2               //传输机制版本（0=V1, 1=V2, 2=V3)
#define WIRELESS_CON_BONDING_EN                 0               //组队绑定
#define WIRELESS_CON_RSSI_THR                   70              //设置连接范围RSSI(-dbm)，该值越小，组队范围越小(产线建议设成70左右，以防距离太远也能配)
#define WIRELESS_SPK_TX_EN                      0               //适配器是否支持SPK发射（下行音频）
#define WIRELESS_MIC_TX_EN                      1               //设备端是否支持MIC发射（上行音频）

//无线MIC配置（上行音频，DEVICE --> ADAPTER）
#if WIRELESS_CON_CODEC_SEL == CODEC_SBC
    #define WIRELESS_MIC_SAMPLE_RATE_SELECT     SAMPLE_RATE_48K //无线mic采样率选择
    #define WIRELESS_MIC_SAMPLES_SELECT         120             //无线mic每帧采样样点数选择  16k：20, ADPCM压缩后是samples*2/4+3
    #define WIRELESS_MIC_CHANNEL_SELECT         1               //无线mic声道选择，1为单声道，2为双声道（目前只支持单声道）
    #define WIRELESS_MIC_FRAME_SIZE             57              //每帧压缩后大小（FRAME_SIZE*LINK_NB*RETRY_NB暂时不能超过72byte）
    #define WIRELESS_MIC_RETRY_NB               3               //传输次数
    #define WIRELESS_MIC_ENC_MAX_US             300             //编码运算时长（单位us）
    #define WIRELESS_MIC_DEC_MAX_US             900             //解码运算时长（单位us，开PLC时约900us）
//    #define WIRELESS_MIC_TX_INTERVAL            4               //传输周期=n*1.25ms（默认值是2，改为4时传输次数可增加到3次）
#elif WIRELESS_CON_CODEC_SEL == CODEC_ADPCM
    #define WIRELESS_MIC_SAMPLE_RATE_SELECT     SAMPLE_RATE_16K //无线mic采样率选择，暂时支持16k
    #define WIRELESS_MIC_SAMPLES_SELECT         20              //无线mic每帧采样样点数选择  16k：20, ADPCM压缩后是samples*2/4+3
    #define WIRELESS_MIC_CHANNEL_SELECT         1               //无线mic声道选择，1为单声道，2为双声道（目前只支持单声道）
    #define WIRELESS_MIC_FRAME_SIZE             13              //每帧压缩后大小（FRAME_SIZE*LINK_NB*RETRY_NB暂时不能超过72byte）
    #define WIRELESS_MIC_RETRY_NB               4               //传输次数
    #define WIRELESS_MIC_ENC_MAX_US             100             //编码运算时长（单位us）
    #define WIRELESS_MIC_DEC_MAX_US             900             //解码运算时长（单位us，开PLC时约900us）
//    #define WIRELESS_MIC_TX_INTERVAL            4               //传输周期=n*1.25ms（默认值是2，改为4时传输次数可增加到3次）
#elif WIRELESS_CON_CODEC_SEL == CODEC_LC3S
    #define WIRELESS_MIC_SAMPLE_RATE_SELECT     SAMPLE_RATE_48K //无线mic采样率选择
    #define WIRELESS_MIC_SAMPLES_SELECT         120             //无线mic每帧采样样点数选择  16k：20, ADPCM压缩后是samples*2/4+3
    #define WIRELESS_MIC_CHANNEL_SELECT         1               //无线mic声道选择，1为单声道，2为双声道（目前只支持单声道）
    #define WIRELESS_MIC_FRAME_SIZE             25              //每帧压缩后大小（FRAME_SIZE*LINK_NB*RETRY_NB暂时不能超过72byte）
    #define WIRELESS_MIC_RETRY_NB               3               //传输次数
    #define WIRELESS_MIC_ENC_MAX_US             850             //编码运算时长（单位us）
    #define WIRELESS_MIC_DEC_MAX_US             1000            //解码运算时长（单位us，开PLC时约900us）
//    #define WIRELESS_MIC_TX_INTERVAL            4               //传输周期=n*1.25ms（默认值是2，改为4时传输次数可增加到5次）
#endif
#define WIRELESS_MIC_LOCAL_OUTPUT_EN            0               //是否支持本地dac输出MIC音频（调试MIC通路用）

//设备端私有配置
#define DEVICE_DAC_OUTPUT_EN                    0               //设备端是否支持dac输出SPK音频
#define DEVICE_MIC_DC_EN                        0               //设备端是否关闭ADC高通滤波，恢复一些低频信号
#define DEVICE_IIS_OUTPUT_EN                    0               //适配器是否支持IIS输出SPK音频（暂不支持）
#define DEVICE_LOCAL_IIS_MIX_EN                 0               //是否支持IIS输入音频
#define DEVICE_MIX_AUX_EN                       0               //是否支持AUX输入音频,仅支持单通道音频，和MIC数据糅合后走编码发送流程
//设备端算法配置
#define WIRELESS_MIC_AINS3_EN                   0               //AINS3_48K算法使能  (发射端处理，默认开启后主频会抬至160M)
#define WIRELESS_MIC_DRC_EN                     0               //发射端是否开启DRC功能
#define WIRELESS_MIC_DRC_DELAY                  WIRELESS_MIC_DRC_EN*450//EQ_DRC运算时间
#define WIRELESS_MIC_ECHO_EN                    0               //发射端是否开启 ECHO音效
#define WIRELESS_MIC_ECHO_DELAY                 WIRELESS_MIC_ECHO_EN*147//ECHO运算时间
#define WIRELESS_MIC_MAGIC_EN                   1               //发射端是否开启 MAGIC音效
#define WIRELESS_MIC_DNN_L1_EN                  0               //发射端DNN_L1算法使能

//适配器端私有配置
#define ADAPTER_DAC_OUTPUT_EN                   1               //适配器是否支持dac输出MIC音频
#define ADAPTER_IIS_OUTPUT_EN                   0               //适配器是否支持IIS输出MIC音频
#define ADAPTER_HUART_OUTPUT_EN                 0               //适配器是否支持HUART输出MIC音频,使用DMA输出。可以同时DAC输出
#define ADAPTER_USB_MIC_RX_EN                   0               //适配器是否支持usb mic上行音频
#define ADAPTER_USB_SPK_TX_EN                   0               //适配器是否支持usb spk下行音频（暂不支持）
#define ADAPTER_LOACL_MIC_EN                    0               //接收端有线麦独立链路 拥有自己的调音资源文件
#define ADAPTER_LOCAL_MIC_MIX_EN                0               //接收端MIC混合到无线MIC音频(音频MIX后可以过算法和进入USB_MIC)
#define ADAPTER_LOCAL_IIS_MIX_EN                0               //是否支持IIS输入音频(暂不支持)
//适配器端算法配置
#define ADAPTER_ECHO_EN                         0               //混响使能 (默认开启后主频会抬至160M)
#define ADAPTER_MAGIC_EN                        0               //魔音使能 (默认开启后主频会抬至160M)
#define ADAPTER_PLATE_REVERB_EN                 0               //板式混响使能 (暂不支持)
#define ADAPTER_ROOM_REVERB_EN                  0               //房间混响使能
#define ADAPTER_NR_FAR_EN                       0               //轻量降噪算法 (默认开启后主频会抬至160M)
#define ADAPTER_AINS3_EN                        0               //AINS3降噪/啸叫算法 (需要调整代码分区，默认开启后主频会抬至160M)
#define ADAPTER_MIX_DRC_EN                      1               //混音DRC功能(用于一拖二混音)
#define ADAPTER_MIC_DRC_EN                      0               //接收端是否开启eq_drc功能

//无线MIC其他细节配置
#define WIRELESS_MIC_DET_SELECT                 IO_NONE         //当用引脚选择发射端主副时，对应接收端的那个引脚接地，为IO_NONE时根据配置工具选择发射接收


/*****************************************************************************
 * Module    : 算法参数配置
 *****************************************************************************/
//AINS3降噪算法
#define AINS3_EN                                (WIRELESS_MIC_AINS3_EN || ADAPTER_AINS3_EN)
#define AINS3_PAR_NT			                20               // 降噪等级 range: -20 ~ 40
#define AINS3_PAR_OPT			                10               // range:  0-19 默认是10

//AI DNN小模型自研降噪算法
#define DNN_L1_EN                               WIRELESS_MIC_DNN_L1_EN               //DNN降噪使能
#define DNN_L1_LEVEL                            0                                   //降噪量：0-30级

//混响算法
#define ECHO_EN                                 (WIRELESS_MIC_ECHO_EN || ADAPTER_ECHO_EN) //宏只能二选一，同时打开会编译报错
#define ECHO_LEVEL			                    50              //attenuation  range:0-90
#define ECHO_DRY_USER                           32767           //干度 range:0-32767
#define ECHO_WET_USER                           20000           //湿度 range:0-32767
#define ECHO_DELAY_MAX_LEVEL                    9               //echo延迟等级划分，按照固定的间隔划分成这么多等级，用于后续等级加减
#define ECHO_DELAY_DEFAULT_LEVEL                5               //echo第一次上电默认等级 range:1-ECHO_DELAY_MAX_LEVEL

//版式混响算法
#define PLATE_REVERB_EN                         (ADAPTER_PLATE_REVERB_EN)
#define PLATE_REVERB_MIX			            9200            //0.4*2^15干湿比       值越大混响效果越明显 0-32767
#define PLATE_REVERB_DAMPING			        13638           //0.05*2^15阻尼       值越小高频衰减越多，声音越干 0-32767
#define PLATE_REVERB_DECAY                      25000           //0.5*2^15衰减率      值越小，衰减越快，尾音少 0-32767
#define PLATE_REVERB_ALLPASS			        22999           //0.5*2^15衰减扩散    控制尾部密度  0-32767
#define PLATE_REVERB_VOCALS                     30000           //人声部分 值越大 人声越突出  0-65535

//房间混响算法
#define ROOM_REVERB_EN                          (ADAPTER_ROOM_REVERB_EN)
#define ROOM_REVERB_LEVEL			            99              //衰减率range:0-100
#define ROOM_REVERB_DRY			                32767           //干度 range:0-65535 数值越大人声音越突出
#define ROOM_REVERB_WET			                26000           //湿度 range:0-32767 数值越大人混响效果越突出

//魔音算法
#define MAGIC_EN                                (WIRELESS_MIC_MAGIC_EN || ADAPTER_MAGIC_EN) //宏只能二选一，同时打开会编译报错
#define MAGIC_SHIFT_LEVEL			            0//-20000          //range: -32768  ~  32767 参数越大声音越沉 反之越尖锐

//轻量降噪算法
#define NR_FAR_EN                               (ADAPTER_NR_FAR_EN)
#define NR_FAR_PAR_NOISE_THR		            2               //轻量降噪算法阈值 range: 0-5
#define NR_FAR_PAR_LEVEL			            3               //轻量降噪算法等级 range:  0-20

//混音DRC


/*****************************************************************************
 * Module    : 外部PA/LNA配置
 *****************************************************************************/
#define RF_EXT_CTL_EN                           0               //是否使用外部PA/LNA
#define RF_PWR_BALANCE_EN                       0               //接收端电流配平宏，对电流底噪有一定的优化

#define RF_EN_GP                        E
#define RF_TX_GP                        E
#define RF_RX_GP                        E
#define RF_EN_BIT                       BIT(7)
#define RF_TX_BIT                       BIT(6)
#define RF_RX_BIT                       BIT(5)

#define RF_EN_GPIODE                    SET_MACRO(GPIO, SET_MACRO(RF_EN_GP, DE))
#define RF_EN_GPIOFEN                   SET_MACRO(GPIO, SET_MACRO(RF_EN_GP, FEN))
#define RF_EN_GPIODIR                   SET_MACRO(GPIO, SET_MACRO(RF_EN_GP, DIR))
#define RF_EN_GPIOSET                   SET_MACRO(GPIO, SET_MACRO(RF_EN_GP, SET))
#define RF_EN_GPIOCLR                   SET_MACRO(GPIO, SET_MACRO(RF_EN_GP, CLR))

#define RF_TX_GPIODE                    SET_MACRO(GPIO, SET_MACRO(RF_TX_GP, DE))
#define RF_TX_GPIOFEN                   SET_MACRO(GPIO, SET_MACRO(RF_TX_GP, FEN))
#define RF_TX_GPIODIR                   SET_MACRO(GPIO, SET_MACRO(RF_TX_GP, DIR))
#define RF_TX_GPIOSET                   SET_MACRO(GPIO, SET_MACRO(RF_TX_GP, SET))
#define RF_TX_GPIOCLR                   SET_MACRO(GPIO, SET_MACRO(RF_TX_GP, CLR))

#define RF_RX_GPIODE                    SET_MACRO(GPIO, SET_MACRO(RF_RX_GP, DE))
#define RF_RX_GPIOFEN                   SET_MACRO(GPIO, SET_MACRO(RF_RX_GP, FEN))
#define RF_RX_GPIODIR                   SET_MACRO(GPIO, SET_MACRO(RF_RX_GP, DIR))
#define RF_RX_GPIOSET                   SET_MACRO(GPIO, SET_MACRO(RF_RX_GP, SET))
#define RF_RX_GPIOCLR                   SET_MACRO(GPIO, SET_MACRO(RF_RX_GP, CLR))

#define RF_CTL_INIT()                   RF_RX_GPIOFEN &= ~RF_RX_BIT; RF_RX_GPIODE |= RF_RX_BIT; RF_RX_GPIODIR &= ~RF_RX_BIT; RF_RX_GPIOCLR = RF_RX_BIT;\
                                        RF_TX_GPIOFEN &= ~RF_TX_BIT; RF_TX_GPIODE |= RF_TX_BIT; RF_TX_GPIODIR &= ~RF_TX_BIT; RF_TX_GPIOCLR = RF_TX_BIT;\
                                        RF_EN_GPIOFEN &= ~RF_EN_BIT; RF_EN_GPIODE |= RF_EN_BIT; RF_EN_GPIODIR &= ~RF_EN_BIT; RF_EN_GPIOSET = RF_EN_BIT
#define RF_CTL_TX()                     RF_TX_GPIOFEN &= ~RF_TX_BIT; RF_TX_GPIODE |= RF_TX_BIT; RF_TX_GPIODIR &= ~RF_TX_BIT; RF_TX_GPIOSET = RF_TX_BIT
#define RF_CTL_RX()                     RF_RX_GPIOFEN &= ~RF_RX_BIT; RF_RX_GPIODE |= RF_RX_BIT; RF_RX_GPIODIR &= ~RF_RX_BIT; RF_RX_GPIOSET = RF_RX_BIT
#define RF_CTL_IDLE()                   RF_RX_GPIOFEN &= ~RF_RX_BIT; RF_RX_GPIODE |= RF_RX_BIT; RF_RX_GPIODIR &= ~RF_RX_BIT; RF_RX_GPIOCLR = RF_RX_BIT;\
                                        RF_TX_GPIOFEN &= ~RF_TX_BIT; RF_TX_GPIODE |= RF_TX_BIT; RF_TX_GPIODIR &= ~RF_TX_BIT; RF_TX_GPIOCLR = RF_TX_BIT


/*****************************************************************************
* Module    : DAC配置控制
******************************************************************************/
#define DAC_CH_SEL                      xcfg_cb.dac_sel             //DAC_MONO ~ DAC_VCMBUF_DUAL
#define DAC_FAST_SETUP_EN               0                           //DAC快速上电，有噪声需要外部功放MUTE
#define DAC_OUT_SPR                     DAC_OUT_48K                //dac out sample rate
#define DAC_LDOH_SEL                    xcfg_cb.dac_ldoh_sel
#define DAC_VCM_CAPLESS_EN              xcfg_cb.dac_vcm_less_en     //DAC VCM省电容方案,使用内部VCM
#define DACVDD_BYPASS_EN                xcfg_cb.dacvdd_bypass_en    //DACVDD Bypass
#define DAC_PULL_DOWN_DELAY             80                          //控制DAC隔直电容的放电时间, 无电容时可设为0，减少开机时间。
#define DAC_OFF_FOR_BT_CONN_EN          xcfg_cb.dac_off_for_conn
#define DACRP_CH_VUSB_EN                xcfg_cb.dacrp_vusb_en       //是否使能DACRP通过VUSB输出

/*****************************************************************************
 * Module    : IIS配置
 *****************************************************************************/
#define I2S_EXT_EN                      (I2S_RX_AUDIO_EN || I2S_TX_AUDIO_EN)                     //IIS总开关宏
#define I2S_RX_AUDIO_EN                 (ADAPTER_LOCAL_IIS_MIX_EN || DEVICE_LOCAL_IIS_MIX_EN)    //IIS 作为麦数据源 (使用需要打开I2S_EXT_EN)
#define I2S_TX_AUDIO_EN                 (ADAPTER_IIS_OUTPUT_EN || DEVICE_IIS_OUTPUT_EN)          //IIS 输出音频数据 (使用需要打开I2S_EXT_EN)，默认使用RAMTX方式
#define I2S_MAPPING_SEL                 I2S_IO_G2                 //I2S IO口选择
#define I2S_MODE_SEL                    1                         //I2S主从模式选择 0: master; 1:slave(暂时只支持IIS_MASTER_RAMTX、IIS_SLAVE_RAMRX)
#define I2S_MCLK_EN                     0                         //I2S是否打开MCLK
#define I2S_BIT_MODE                    IIS_32BIT                 //I2S数据位宽选择 16bit;32bit(16bit mode 待调试)
#define I2S_DATA_MODE                   IIS_DATA_NORMAL           //I2S数据格式选择 left-justified mode; normal mode
#define I2S_MCLK_SEL                    IIS_MCLK_256FS            //I2S MCLK选择 0:64fs 1:128fs 2:256fs

/*****************************************************************************
 * Module    : User按键配置 (可以同时选择多组按键)
 *****************************************************************************/
#define USER_ADKEY                      0           //ADKEY的使用， 0为不使用
#define USER_ADKEY2                     0           //ADKEY2的使用，0为不使用
#define USER_PWRKEY                     1           //PWRKEY的使用，0为不使用
#define USER_IOKEY                      0           //IOKEY的使用， 0为不使用
#define ADKEY_PU10K_EN                  0           //ADKEY是否使用内部10K上拉, 按键数量及阻值见port_key.c

#define USER_MULTI_PRESS_EN             1           //按键N击检测使能
#define USER_KEY_DOUBLE                 {KU_PLAY_PWR_USER_DEF, KU_PLAY_USER_DEF}        //支持双击/三击/四击/五击的按键
#define ADKEY_CH                        xcfg_cb.adkey_ch    //ADCCH_PE7
#define ADKEY2_CH                       xcfg_cb.adkey2_ch   //ADCCH_PE6

#define IS_PWRKEY_PRESS()			    ((sys_cb.wko_pwrkey_en) && (0 == (RTCCON & BIT(19))))
#define DOUBLE_KEY_TIME                 (xcfg_cb.double_key_time)                       //按键双击响应时间（单位50ms）
#define PWRON_PRESS_TIME                (500*xcfg_cb.pwron_press_time)                  //长按PWRKEY多长时间开机？
#define PWROFF_PRESS_TIME               (3+3*xcfg_cb.pwroff_press_time)                 //长按PWRKEY多长时间关机？

/*****************************************************************************
 * Module    : 系统细节配置
 *****************************************************************************/
#define SYS_PARAM_RTCRAM                0           //是否系统参数保存到RTCRAM
#define VBAT_DETECT_EN                  1           //电池电量检测功能
#define VBAT2_ADCCH                     ADCCH_VBAT  //ADCCH_VBAT为内部1/2电压通路，带升压应用需要外部ADC通路检测1/2电池电压
#define VBAT_FILTER_USE_PEAK            0           //电池检测滤波选则://0 取平均值.//1 取峰值(适用于播放音乐时,电池波动比较大的音箱方案).
#define EQ_DBG_IN_UART                  1           //是否使能UART在线调节EQ
#define EFFECT_SET_IN_UART              1               //发射端是否开启ECHO/MAGIC音效在线调试，需要先打开 EQ_DBG_IN_UART 才能使用
#define EQ_DBG_IN_UART_VUSB_EN          0           //打开vusb在线调EQ的功能，vusb使用dma方式，默认波特率1.5M,打开智能仓或快测功能时波特率为9600
#define EQ_TBL_RES2_EN                  0			//是否使用资源2
#define RES2_BASE_ADDR                  (FLASH_SIZE-0x6000-0x11000000)
#define EQ_TBL_FIRST_SELECT_RES2        0           //优先选择资源2
#define SYS_EQ_FOR_IDX_EN               0           //是否使能10条EQ独立调节(包括高低音)
#define SLEEP_DAC_OFF_EN                (is_sleep_dac_off_enable()) //sfunc_sleep是否关闭DAC， 复用MICL检测方案不能关DAC。
#define LPWR_WARNING_VBAT               xcfg_cb.lpwr_warning_vbat   //低电提醒电压
#define LPWR_OFF_VBAT                   xcfg_cb.lpwr_off_vbat       //低电关机电压
#define LOWPWR_REDUCE_VOL_EN            0                           //低电是否降低音量
#define LPWR_WARING_TIMES               0xff                        //报低电次数
#define HUART_EN                        1                           //是否使能高速串口
#define VUSB_DETECT_EN                  0                           //VUSB电压检测，与省电容电阻MIC的TRIM复用
#define HUART_DUMP_AUDIO                0                           //是否支持HUART DUMP音频数据

#define MIC_DETECT_EN                   0                           //是否使能MIC检测
#define MIC_DETECT_INIT()               mic_detect_init()
#define MIC_IS_ONLINE()                 mic_is_online()
#define IS_DET_MIC_BUSY()               is_detect_mic_busy()
/*****************************************************************************
 * Module    : LED指示灯配置
 *****************************************************************************/
#define LED_DISP_EN                     1           //是否使用LED指示灯(蓝灯)
#define LED_PWR_EN                      1           //充电及电源指示灯(红灯)
#define LED_LOWBAT_EN                   0                           //电池低电是否闪红灯
#define BLED_CHARGE_FULL                xcfg_cb.charge_full_bled    //充电满是否亮蓝灯

#define LED_INIT()                      bled_func.port_init(&bled_gpio)
#define LED_SET_ON()                    bled_func.set_on(&bled_gpio)
#define LED_SET_OFF()                   bled_func.set_off(&bled_gpio)

#define LED_PWR_INIT()                  rled_func.port_init(&rled_gpio)
#define LED_PWR_SET_ON()                rled_func.set_on(&rled_gpio)
#define LED_PWR_SET_OFF()               rled_func.set_off(&rled_gpio)


/*****************************************************************************
 * Module    : 充电功能选择
 *****************************************************************************/
#define CHARGE_EN                       1           //是否打开充电功能
#define CHARGE_TRICK_EN                 xcfg_cb.charge_trick_en     //是否打开涓流充电功能
#define CHARGE_DC_RESET                 xcfg_cb.charge_dc_reset     //是否打开DC插入复位功能
#define CHARGE_DC_NOT_PWRON             xcfg_cb.charge_dc_not_pwron //DC插入，是否软开机。 1: DC IN时不能开机
#define CHARGE_DC_IN()                  ((RTCCON >> 20) & 0x01)
#define CHARGE_INBOX()                  ((RTCCON >> 22) & 0x01)
#define CHARGE_LOW_POWER_EN             0           //是否打开充电低功耗模式,打开此宏时，不能打开 VUSB_HUART_DMA_EN 这个宏
#define CHARGE_NOT_SWITCH_LDO           0           //是否充电时切到LDO模式

//充电截止电流：0:2.5mA; 1:5mA; 2:10mA; 3:15mA; 4:20mA; 5:25mA; 6:30mA; 7:35mA
#define CHARGE_STOP_CURR                xcfg_cb.charge_stop_curr    //0~7
//充电截止电压：0:4.15v 1:4.3v
#define CHARGE_STOP_VOLT                0    //0~1
//恒流充电（电池电压大于2.9v）电流：0:10mA, 1:20mA, 2:30mA, 3:40mA, 4:50mA, 5:60mA, 6:70mA, 7:80mA, 8:90mA, 9:100mA, 10:110mA, 11:120mA, 12:140mA, 13:160mA, 14:180mA, 15:200mA
#define CHARGE_CONSTANT_CURR            (xcfg_cb.charge_constant_curr)
//涓流截止电压：0:2.9v; 1:3v
#define CHARGE_TRICK_STOP_VOLT          1
//涓流充电（电池电压小于2.9v）电流：0:10mA; 1:20mA; 2:30mA;
#define CHARGE_TRICKLE_CURR             (xcfg_cb.charge_trickle_curr)

/*****************************************************************************
 * Module    : VUSB UART功能选择
 *****************************************************************************/
#define VUSB_HUART_DMA_EN               0            //VUSB使用高速串口
#define VUSB_TBOX_QTEST_EN              0            //VUSB快速测试盒测试
#define VUSB_TBOX_QTEST_CUSTOM_EN       0            //VUSB快速测试盒自定义测试
#define VUSB_SMART_VBAT_HOUSE_EN        0            //昇生微智能充电仓
#define VUSB_SMART_VBAT_DELAY_DISC      3500         //智能充电仓时，延迟断线进入充电（0=不延迟, n=延迟n毫秒）

/*****************************************************************************
 * Module    : 小牛测控选择
 *****************************************************************************/
#define IODM_TEST_MODE                  0            // IODM 测试 功能
#define IODM_TEST_MODE_HUART_EN         0            // IODM 映射到高速串口，在配置"HUART串口选择"中选择测试io（小牛测控使用非VUSB口需要打开该宏）

/*****************************************************************************
 * Module    : 提示音 功能选择
 *****************************************************************************/
#define WARNING_TONE_EN                 0            //是否打开提示音功能, 总开关 不能打开降噪，开启一拖二需要移动plc的ram (安全起见sbc也需要)
#define WARNING_PIANO_EN                0            //是否打开Piano音功能
#define WARNING_FIXED_VOLUME            1            //提示音是否固定音量，不跟随系统音量调节
#define WARING_MAXVOL_MP3               0            //最大音量提示音WAV或MP3选择， 播放WAV可以与MUSIC叠加播放。
#define WARNING_ESBC_PLAY               0            //是否支持esbc提示音播放
#define LANG_SELECT                     LANG_EN_ZH   //提示音语言选择

#define WARNING_POWER_ON                0
#define WARNING_POWER_OFF               0
#define WARNING_FUNC_AUX                0
#define WARNING_FUNC_USBDEV             0
#define WARNING_FUNC_SPEAKER            0
#define WARNING_LOW_BATTERY             0
#define WARNING_MAX_VOLUME              1
#define WARNING_MIN_VOLUME              0


#define SW_VERSION		"V0.0.1"		//只能使用数字0-9,ota需要转码
#define HW_VERSION		"V0.0.1"		//只能使用数字0-9,ota需要转码

#include "config_extra.h"

#endif // USER_FPGA_CONFIG_H
